package com.gxuwz.dao;

import com.gxuwz.entity.Course;
import com.gxuwz.entity.vo.CourseVo;
import com.gxuwz.entity.vo.PageVo;
import com.gxuwz.result.PageInfo;

import java.util.List;

/**
 * @Description:实现课程相关信息操作接口
 */

public interface CourseDao {
    /**
     * @Description:查询所有课程信息
     * @Param:  [com.gxuwz.entity.Course, com.gxuwz.result.PageInfo]
     * @Return: com.gxuwz.entity.vo.PageVo
     */
    public PageVo selectCourseAll(Course entity, PageInfo pageInfo,String instID);

    /**
     * @Description:通过课程编号查询相关的课程记录信息
     * @Param:  [java.lang.String]
     * @Return: com.gxuwz.entity.vo.CourseVo
     */

    public CourseVo selectCourseByID(String courseId);

    /**
     * @Description:插入一条课程信息记录
     * @Param:  [com.gxuwz.entity.Course]
     * @Return: int
     */

    public int insertCourse(Course entity);

    /**
     * @Description:通过课程编号更新课程记录信息
     * @Param:  [com.gxuwz.entity.Course, java.lang.String]
     * @Return: int
     */

    public int updateCourse(Course entity,String oldId);

    /**
     * @Description:通过课程编号删除一条课程记录信息
     * @Param:  [java.lang.String]
     * @Return: int
     */

    public int deleteCourseById(String courseId);

    /**
     * @Description:通过课程编号删除一组课程记录信息
     * @Param:  [java.lang.String[]]
     * @Return: int
     */

    public int deleteCourse(String[] ids);

    /**
     * @Description:获取所有课程编号
     * @Param:  []
     * @Return: java.util.List<java.lang.String>
     */

    List<String> selectCourseIds();

    /**
     * @Description:获取所有的课程学年
     * @Param:  []
     * @Return: java.util.List<java.lang.String>
     */

    List<String> selectCourseYear();

    /**
     * @Description:获取所有的课程编号和课程名称
     * @Param:  []
     * @Return: java.util.List<com.gxuwz.entity.Course>
     */

    List<Course> selectCourseIDAndName(String stuID);

    /**
     * @Description:通过班级编号，查询所有属于此班级的课程记录信息
     * @Param:  [java.lang.String]
     * @Return: java.util.List<com.gxuwz.entity.Course>
     */

    List<Course> selectCourseByClassID(String classId);
}
